#include "MYSQL_api.hpp"
#include "room.hpp"
#include "session.hpp"
#include "matcher.hpp"
#include "server.hpp"

#define name_1 "user1"
#define passwd "2308381826@Twj"
#define host "121.196.200.21"
#define db "hello"
#define port 3306

/*
int main()
{
    /*
    ILOG("hello world", 123);
    string str = "abd";
    ELOG("error hello world %s", str.c_str());
    */

/*
string Str = "select * from students";
string Str1 = "insert into students (name, age, grender) values ('小美', 18, '女')";
//cout << "hello " << endl;
unique_ptr<mysql_util> ptr(new mysql_util(name, passwd, host, db, port));
//cout << "智能指针初始化成功" << endl;
ptr->Mysql_init();
//cout << "init success" << endl;
ptr->Query(Str.c_str());
*/

// 测试json
/*
Json::Value root, root1;
string Str;
root["name"] = "小王";
root["age"] = 12;
root["socre"].append(80);
root["socre"].append(90);
root["socre"].append(100);
Json_api Json;
Json.serialize(root, Str);
cout << "序列化后结果为" << endl
     << "\t" << Str << endl;
Json.unserialize(root1, Str);
cout << "姓名：" << root1["name"].asString() << endl;
cout << "年龄：" << root1["age"].asInt() << endl;
cout << "成绩为：" << endl;
for (int i = 0; i < root1["socre"].size(); i++)
{
    cout << root1["socre"][i].asInt() << "  ";
}
cout << endl;

// 字符串测试
/*
string Str1 = "hello,,world,,,,nihao";
string Str2 = ",,1";
vector<string> arry;
String_Util::StrSub(Str1, Str2, arry);
for (int i = 0; i < arry.size(); i++)
{
    cout << arry[i] << endl;
}*/

// 文件流测试
/*
string filename = "Log_test.hpp";
string text;

File_Util::read(filename, text);

cout << filename << "内容为: " << text << endl;

return 0;
}
*/

// int main()
// {
//     Json::Value root;
//     root["username"] = "小丽";
//     root["password"] = "234512";
//     Mysql_api user(name_1, passwd, host, db, port);
//     MYSQL_RES *Result;

//     // user.Insert(root);
//     if (user.Login_user(root))
//     {
//         cout << "登录成功" << endl;
//     }
//     else
//     {
//         cout << "登录失败" << endl;
//         return 0;
//     }

//     user.User_Win(1);
//     Json::Value Info;
//     user.Select_user("小丽", Info);
//     cout << Info["id"] << " " << Info["score"] << endl;
// return 0;
// }

// int main()
// {
//     //这里不能先创建好MYSQL*对象再去获取数值，可能会导致后面因为新开辟的MYSQL对象内存不够开辟失败导致段错误
//     MYSQL* mysql;
//     mysql = mysql_util::Mysql_create( name_1, passwd, host, db, port);
//     string STR = "select * from user;";
//     mysql_util::Query(mysql, STR);
//     MYSQL_RES* result = mysql_store_result(mysql);
//     for(int i = 0;i < mysql_num_rows(result); i++)
//     {
//         MYSQL_ROW row = mysql_fetch_row(result);
//         for(int j = 0; j < mysql_num_fields(result); j++)
//         {
//             cout << row[j] << "  ";
//         }
//         cout << endl;
//     }

//     mysql_util::Mysql_close(mysql);
//     return 0;
// }


// int main()
// {
//     websocketpp::server<websocketpp::config::asio>::connection_ptr wsserver_t;
//     online_manger user;
//     user.enter_game_hall(1, wsserver_t);
//     if (user.in_game_hall(1))
//     {
//         cout << "1 号用户在游戏大厅中" << endl;
//     }
//     else
//         cout << "1 号用户不在游戏大厅中" << endl;

//     user.exit_game_hall(1);
//     if (user.in_game_hall(1))
//     {
//         cout << "1 号用户在游戏大厅中" << endl;
//     }
//     else
//         cout << "1 号用户不在游戏大厅中" << endl;
//     return 0;
// }

int main()
{
    //Mysql_api ap(name_1, passwd, host, db, port);
    //online_manger on;

    // room r(10, &ap, &on);
    // Json::Value J;
    // r.handle_request(J);
    gobang_server _gs(name_1, passwd, host, db, port);
    _gs.start(8080);
    return 0;
}